iPRN II (C) Peter Missel 1994-96 "G„hn, schon wieder ein Beschleuniger fr die Druckausgabe!" Jawohl, schon wieder einer. Aber einer mit Statusberwachung per Interrupt. Und ein richtig schneller noch dazu. Fast 40fache Beschleunigung gegenber TOS kann erreicht werden. "Und was heižt das, Statusberwachung?" Nun, ganz einfach: Zus„tzlich zur bei Druckbeschleunigern blichen Beschleunigung des Druckens kann iPRN unterscheiden, ob der Drucker nur besch„ftigt oder in einem Fehlerzustand ist (offline, ausgeschaltet, kein Papier, nicht angeschlossen...). So weiž das System im voraus, ob es m”glich ist, Zeichen an den Drucker zu senden oder nicht. Dadurch entf„llt die l„stige Gedenkminute, wenn man drucken will und der Drucker nicht bereit ist. Die Fehlermeldung erscheint sofort. iPRN II ist Shareware. Die Demoversionen (Programmdatei IPRN2D.PRG, Versionsnummer 2-xx statt 2.xx) k”nnen frei verbreitet werden. Nur das vollst„ndige und unver„nderte Paket IPRN2xxD.LZH darf weitergegeben werden. Einschr„nkungen der Demoversion: - Die GEMDOS-Beschleunigung wirkt nur beim ersten Ausdruck. - Die Statusberwachung funktioniert pro Sitzung nur einmal: Wenn der Drucker einmal Offline war und wieder Online gesetzt wird, deaktiviert sich die Statusberwachung selbst. Dann l„uft alles normal weiter, nur halt wieder mit Gedenkminute bei Druckerfehler. Die Beschleunigungswirkung bleibt erhalten. - Kein Kontrollfeldmodul: - Timeouts nicht konfigurierbar - Statusberwachung nicht abschaltbar (schaltet sich sowieso von selber ab) - keine Deskjet-Weckfunktion Die registrierten Versionen 1.00 und h”her kosten in Deutschland DM 25,- und US$ 20 im Ausland. Registrierung ============= DM 25,- / US$ 20 berweisen an: Peter Missel, Stadtsparkasse Augsburg, BLZ 72050000, Kto. 1301522. Als Verwendungszweck "iPRN Vorname Nachname" angeben. UK: Scheck oder Postal Order ber 13 Pounds Sterling, zahlbar an Denesh Bhabuta, senden an: CyberSTrider, 203 Parr Lane, Unsworth, Bury, Lancashire, BL9 8JW Bitte nicht vergessen, Name und Adresse anzugeben. Denesh kann auch ber E-mail erreicht werden: dbhabuta@cix.compulink.co.uk danny@micros.hensa.ac.uk Zur eindeutigen Identifizierung zus„tzlich eine Postkarte schicken an: Peter Missel, Greiffstraže 11, 86157 Augsburg, Deutschland. Oder eMail an Peter Missel @ A im Mausnetz. (Peter_Missel@a.maus.de fr Benutzer anderer Netze) Bitte auch hier die vollst„ndige Postadresse angeben. Wirkung (Zeichen pro Sekunde) ============================= BIOS GEMDOS Rechner ohne mit iPRN ohne mit iPRN II ---------------------------------------------------------------------- ST, 8 MHz, TOS 2.06 1800 13500 1650 64500 ST, 16 MHz, TOS 1.04 3200 >17200 Falcon030, TOS 4.04 3500 bis 36100 * 2930 >115000 Falcon030, TOS 4.04, Bild aus 4500 bis 39370 * >115000 Falcon030/32 MHz, Bild aus 4800 bis 39370 * >115000 TT030 ohne FastRAM, TOS 3.06 5600 bis 34100 * TT030 mit FastRAM, TOS 3.06 ? bis 41000 * >72000 (Die "gr”žer als"-Werte sind aus Benchmarks, bei denen der Rechner schneller senden konnte, der Drucker aber nicht schnell genug war.) * Bei 68030-Rechnern schwanken die BIOS-Mežwerte mit der Lage von Treiber und Software im CPU-Cache. Im schlechtesten Fall erh„lt man etwa 20% weniger Durchsatz, "normal" etwa 5% weniger als die angegebenen Maximalwerte. Die GEMDOS-Druckroutine in iPRN II pažt jedoch komplett in den Cache, so daž die angegebenen Werte meistens ungef„hr erreicht werden. Installation ============ IPRN2.PRG geh”rt in den AUTO-Ordner, und zwar so weit hinten wie m”glich. MiNT-Anwender mssen es vor MINT.PRG (oder MINTNP.PRG) in den AUTO-Ordner stecken. Die Demoversion fordert beim Systemstart die Eingabe "iPRN II". Andernfalls installiert sie sich nicht. (Achtung Grafikkartenbesitzer: Wenn kein Programm installiert ist, das die Textausgaben der Bootphase auf die Grafikkarte umleitet, muž die Eingabe ohne Sichtkontrolle erfolgen.) IPRN2.CPX ist das Kontrollfeldmodul und geh”rt in den Ordner, in dem die schon vorhandenen Moduln auch schon sind. Normalerweise ist das C:\CPX\. Es ist allerdings nur in der registrierten Version dabei. Bedienung ========= An IPRN2.PRG gibt es nichts zu bedienen. Es wird im AUTO-Ordner automatisch gestartet und installiert sich. Falls die Installation unm”glich ist, wird eine Fehlermeldung ausgegeben: "already installed" oder "Printer port already in use", wenn das Programm bereits installiert ist bzw. wenn bereits ein anderes Programm den Interrupt der Druckerschnittstelle belegt hat. Das Kontrollfeld-Modul dient zur Konfiguration des Programms: - "Offline Timeout" ist die maximale Zeit in Sekunden, die vor dem Absenden eines Zeichens gewartet wird, bevor der Drucker fr abwesend erkl„rt und eine Fehlermeldung erzeugt wird. - "End-of-job delay" ist die Zeit, die nach dem letzten gedruckten Zeichen verstreichen muž, bevor die Zustandsberwachung wieder wirksam wird. - "Printer state watchdog": Zustandsberwachung des Druckers per Interrupt. Kann jederzeit an- und ausgeschaltet werden. Ausschalten empfiehlt sich vor der Benutzung eines Programms, das selbst die Hardware direkt benutzt. - Nebenbei kann man durch Druck auf "OK" oder "Save" auch eingeschlafene Deskjets wieder zum Leben erwecken. Das Kontrollfeldmodul ist nur in den registrierten Versionen enthalten; in den Demoversionen ist "Offline Timeout" auf 45, "End-of-job delay" auf 2 Sekunden fest eingestellt, und der "Printer state watchdog" deaktiviert sich nach dem ersten Druckerfehler von selbst. Die erwnschten Nebenwirkungen von iPRN II sind: - Die Erzeugung des STROBE-Signals funktioniert unabh„ngig von der Geschwindigkeit des Rechners. Auch Besitzer ultraschneller Ger„te jenseits des TT k”nnen iPRN II benutzen. - Auch bei der Hardcopy entf„llt die l„stige Pause bei abwesendem Drucker. Der Druckvorgang wird auch hier beschleunigt. - Beim Reset des Rechners wird statt eines undefinierten Mllzeichens ein definiertes Mllzeichen gesendet, n„mlich ein Nullbyte. Daž es gesendet wird, ist im TOS so festgenagelt (zumindest bis TOS 1.04) und l„žt sich nicht vermeiden. Unerwnschte Nebenwirkungen: - Programme, die die Druckausgabe direkt auf die Hardware machen (anstatt ber GEMDOS oder BIOS), l”sen damit pro Byte zwei Interrupts aus, was _diese_ Druckvorg„nge langsamer macht als vorher. (Aber zum Glck nicht viel.) Das betrifft allerdings auch nur solche Oldies wie Calamus 1.x oder Signum!Zwei. (Zu letzterem gibt es ein Update, das diesen Mangel behebt.) Besitzer einer registrierten Version von iPRN II k”nnen vor dem Ausdruck mit solchen Programmen die Druckerstatusberwachung ber das Kontrollfeld deaktivieren. - Schliežlich bercksichtigen viele Programme nicht, daž die Zeichenausgabe- funktion des BIOS einen Fehlercode zurckliefert, so daž man den Drucker nicht w„hrend des Drucks offline schalten kann. iPRN II ignoriert deswegen den Offline-Zustand innerhalb 2 Sekunden nach dem letzten gesendeten Zeichen (in den registrierten Versionen konfigurierbar). Sp„testens nach dem "grožen" Timeout (normalerweise 45 Sekunden, in der registrierten Version konfigurierbar) gehen dann trotzdem Zeichen verloren, und der Ausdruck bekommt ein paar Spezialeffekte dazu. Das passiert allerdings auch mit der normalen Druckfunktion des TOS und hat mit iPRN II nichts zu tun. - Auch die Rckgabewerte der GEMDOS-Funktionen werden l„ngst nicht von allen Programmen beachtet oder gar korrekt behandelt. Kontraindikationen: - Nicht anwenden bei hardwarem„žiger Inkompatibilit„t des Druckerausgangs, etwa bei GEMulator- oder JANUS-Steckkarten fr DOS-PCs oder Mag!C Mac. ============================================================================== Fr die Techniker: iPRN II h„ngt im BIOS-Trap (mit XBRA-Kennung "iPRN") und f„ngt Bconout( 0, ... ) und Bcostat( 0 ) ab. Mit der gleichen Kennung installiert es sich im GEMDOS-Trap und f„ngt den Drucker betreffende Aufrufe von Fcreate, Fopen, Fclose, Fwrite, Fdup und Fforce ab. Zus„tzlich installiert es sich in den Vektoren xconout0, xcostat0, prv_lst, prv_lsto und resvector. Es aktiviert und benutzt MFP Interrupt I0. Ein Cookie "iPRN" wird eingetragen, dessen Wert ein Zeiger auf Konfigurationswerte ist; diese wiederum k”nnen mit dem Kontrollfeldmodul ver„ndert werden. (Nur in den registrierten Versionen.) Verbesserungen im Verhalten der einzelnen Funktionen gegenber TOS: Bcostat( 0 ) liefert auch mitten im Druckvorgang einen aussagekr„ftigen Wert, weil unterschieden wird, ob der Drucker wegen eines gerade gesendeten Zeichens busy ist, oder von sich aus die BUSY-Leitung gesetzt hat (etwa weil ein Fehler aufgetreten ist oder der Drucker offline geschaltet ist). Das Ergebnis ist wie gewohnt -1 fr "ready" und 0 fr "not ready", nur daž ein gew”hnlicher Busy-Zustand auch als "ready" gemeldet wird. Fopen, Fcreate und Fdup liefern EDRVNR, wenn der Drucker nicht bereit ist. Fwrite liefert im Gegensatz zur Originalfunktion die tats„chlich gedruckte Anzahl Bytes. Im Fehlerfall kann das durchaus weniger sein als die bergebene Menge. Die Originalfunktion liefert immer letztere als Ergebnis, egal, ob sie die Daten tats„chlich gedruckt hat oder nicht. Korrekterweise muž ein Anwender- programm also mehrere F„lle unterscheiden: - Der Rckgabewert ist positiv und gleich der bergebenen Datenmenge. In diesem Fall ist alles in Ordnung. - Der Rckgabewert ist positiv, aber kleiner als die zu druckende Anzahl Bytes. Das Programm muž den Benutzer informieren und ggf. die restlichen Daten nochmal mittels Fwrite absetzen. - Der Rckgabewert ist negativ. Es wurde kein Byte gedruckt, und der Wert ist ein GEMDOS-Fehlercode, blicherweise EDRVNR. Die Reaktion des Anwenderprogramms ist die gleiche wie vor, nur daž der ganze Block nochmals gesendet werden muž. ============================================================================== Dank geht an: Thomas Fladerer (mein mutiges Dauer-Versuchskaninchen) Die Betatester: Franz Blaha, Thomas Fladerer, Robert Federle, Andreas Kohout, Heinz Ltkebohmert, Michael Nolte. Die unfreiwilligen Tester: Werner Deinb”ck, Mathias Donat, Michael Ruge, Walter Vieser. Atari fr die Hardware-Dokumentation, einige kleine Codefetzen zum Thema Interrupthandling und Programmstart, und die Tools zum Erzeugen von Kontrollfeld-Moduln; Harun Scheutzow fr Beistand im Ringen gegen die Zicken des MFP; Julian F. Reschke frs geduldige Verwalten der XBRA-Liste. Besonderer Dank an Thomas Fladerer, Andreas Kohout und Michael Kunert, die mir ihre Drucker samt Tinte ”fters mal geborgt haben. Peter Missel, im Mai 1996